package edu.hcnu.proxy.dynamic;

import java.lang.reflect.InvocationHandler;

/**
 * @description:
 * @author: Administrator
 * @time: 2022/9/21 17:58
 */
public class Proxy {
    /**
     * 创建jdk代理
     * <p>
     * jdk代理一定要存在接口
     *
     * @param needProxy 需要代理对象
     * @return {@link Object}
     */
    public static Object createProxy(Object needProxy) {
        //    ClassLoader loader, 类加载器 通常指定被代理的接口类加载器
        //    Class<?>[] interfaces,类型，通常指定被代理的接口类型
        //    InvocationHandler h 委托执行的处理类

        ClassLoader loader = needProxy.getClass().getClassLoader();

        Class<?>[] interfaces = needProxy.getClass().getInterfaces();

        InvocationHandler h = new MyInvocationHandler(needProxy);


        Object o = java.lang.reflect.Proxy.newProxyInstance(loader, interfaces, h);

        return o;
    }
}
